package collection;

import java.sql.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();//可以改为LinkedList结果不会有变化
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");

        //E get(int index)
        String e = list.get(3);
        System.out.println(e);//four

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        for (String str : list) {//新循环:for(元素类型 元素名称：集合名称){sout(元素名称)}
            System.out.println(str);
        }


        Iterator<String> it = list.iterator();//为list创建一个迭代器
        while (it.hasNext()) {//hasNext()是迭代器it下返回值为boolean的方法
            String str = it.next();
            //it.next()是迭代器下返回值为返回值为Object类型的方法
            //因为规定了迭代器的元素为String类型，所以直接创建String对象来接收,不再需要强转
            System.out.println(str);
        }


        System.out.println("---------------------");


        //E set(int index,e)
        String old = list.set(2, "six");
        //将数组下标为2的元素改为six，返还被替换的数据
        //式子中有引号，建议创建一个对象先接收一下
        System.out.println("list:" + list);
        System.out.println("old为"+old);//被替换的数据three

        // E remove(int index):
        list.remove(4);//有参有返回值
        String s =list.remove(2);//删除指定下标的元素，并返返回被删的元素
        System.out.println("list:"+list);//[one, two, four]
        System.out.println(s);//通常不会接收被返回的元素


        //将元素添到指定位置，相当于是插入操作
        list.add(3,"seven");//可以插入，也可以往后扩一格
        System.out.println(list);//[one, two, four, seven]


    }
}
